package java_thinking.unit_19._19_1_6;

/**
 * @Desc:   由于values()方法是由编译器插入到enum中的static方法，所以将enum向上转型为Enum，那么values()方法就无法访问了
 *          但是，在Class中有一个getEnumConstants()方法，几遍Enum中没有values()，我们任然可以通过Class对象取的所有enum实例
 * @author: cww
 * @DateTime: 2019/5/22 19:43
 */
enum Search { HITHER, YON }
public class UpcastEnum {
    public static void main(String[] args) {
        Search[] vals = Search.values();
        Enum e = Search.HITHER;
        //无法从e直接调用values()
        Search[] vals1 = ((Search) e).values();
        for (Search search : vals1) {
            System.out.println(search);
        }
        for (Enum en : e.getClass().getEnumConstants()) {
            System.out.println(en);
        }
    }
}
